package com.example.librarymanagementsystembackend.usermanagement.mapper;

import com.example.librarymanagementsystembackend.usermanagement.entity.User;
import com.example.librarymanagementsystembackend.usermanagement.entity.UserProfile;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface UserMapper {

    /**
     * 根据用户ID查询用户（包括关联的 UserProfile）
     */
    User findUserById(Integer id);

    /**
     * 查询所有用户
     * @return  返回所有用户的列表
     */
    List<User> findAllUsers();

    /**
     * 插入用户
     */
    int insertUser(User user);

    /**
     * 插入用户 `扩展` 信息 通过 用户 ID
     */
    void insertUserProfile(Integer userId, String avatarUrl, String backgroundColor);

    /**
     * 更新用户信息
     */
    void updateUser(User user);

    /**
     * 更新用户扩展信息
     */
    void updateUserProfile(Integer userId, String avatarUrl, String backgroundColor);

    /**
     * 删除用户通过ID
     */
    void deleteUserById(Integer id);

    /**
     * 查询用户扩展信息
     */
    UserProfile findProfileByUserId(Integer userId);

    // TODO 新增接口方法 existsByUsername()

    /**
     * 判断数据库表 user 中是否存在指定的用户名。
     * @param username 用户名
     * @return 如果存在，返回 true；否则返回 false。
     */
//    @Select("SELECT COUNT(*) FROM users WHERE username = #{username}")
    boolean existsByUsername(String username);


    // TODO 新增接口方法 deleteProfileByUserId()
    /**
     * 删除用户额外资料, 通过 ID
     * @param userId
     */
//    @Delete("DELETE FROM userprofiles WHERE userId = #{userId}")
    void deleteProfileByUserId(Integer userId);

    User getUserByUsername(String username);
}